﻿using Tibet.Logica.Comandos;
using Tibet.Logica.Comandos.ComandoAdministracionLogin;
using Tibet.Entidades;
using System.Text;

namespace Tibet.Logica.FabricaLogica
{
    /// <summary>
    /// Clase que controla los comandos relacionados con la gestión de las 
    /// credenciales
    /// </summary>
    public class FabricaComandoCredencial
    {
        /// <summary>
        /// Crea la credencial recibida como parámetro
        /// </summary>
        /// <param name="credencial">Credencial a crear</param>
        /// <returns>Comando para crear la credencial</returns>
        public static Comando CrearComandoCrearCredencial
            ( Credencial credencial )
        {
            return new ComandoCrearCredencial( credencial );
        }

        /// <summary>
        /// Modifica la credencial recibida como parámtero
        /// </summary>
        /// <param name="credencial">Credencial a modificar</param>
        /// <returns>Comando para modificar la credencial</returns>
        public static Comando CrearComandoModificarCredencial
            ( Credencial credencial )
        {
            return new ComandoModificarCredencial( credencial );
        }

        /// <summary>
        /// Valida la credencial recibida como parámetro
        /// </summary>
        /// <param name="credencial">Credencial a validar</param>
        /// <returns>Comando para validar la credencial</returns>
        public static Comando CrearComandoValidarCredencial
            ( Credencial credencial )
        {
            return new ComandoValidarCredencial( credencial );
        }

        /// <summary>
        /// Estructura un mensaje de correo electrónico con la información 
        /// contenida en la credencial y en la dirección de correo electrónico
        /// recibidas como parámetros
        /// </summary>
        /// <param name="credencial">Credencial a enviar</param>
        /// <param name="email">Email al cual se envía la credencial</param>
        /// <returns>
        /// Comando para estructurar el mensaje de correo electrónico a enviar
        /// </returns>
        public static Comando CrearComandoEstructurarEmailCredencial
            (  string email )
        {
            return new ComandoEstructurarEmailCredencial( email );
        }

        /// <summary>
        /// Envía el mensaje con la información de la credencial a la dirección
        /// de correo electrónico recibida como parámetro
        /// </summary>
        /// <param name="mensaje">Mensaje a enviar</param>
        /// <param name="email">Email al cual se envía el mensaje</param>
        /// <returns>Comando para enviar la credencial</returns>
        public static Comando CrearComandoEnviarCredencial(string mensaje, 
            string email )
        {
            return new ComandoEnviarCredencial( mensaje, email );
        }
    }
}
